#include "operacionEliminar.h"

std::string OperacionEliminar::NOMBRE_PARAM_ELIMINAR = "ELIMINAR";

OperacionEliminar::OperacionEliminar(std::string &archivo){
	this->nombre_archivo = archivo;	
}

OperacionEliminar::~OperacionEliminar(){}

Operacion * OperacionEliminar::construir(std::string param)throw (ExcepSintaxisParser){
	Operacion * _return = NULL;
	if (Parser::procesar_nombre_operacion(param,NOMBRE_PARAM_ELIMINAR)){
		//si tiene los params que necesita el eliminar y es del tipo
		std::vector<std::string> params = Parser::split_parametros(param, ';');
		if( params.size() == 1){
			Parser::revisar_comas(param);
			std::string nombre_archivo;
			nombre_archivo = Parser::procesar_nombre(params[0]);//reviso el nombre del archivo
			//creo la operacion eliminar
			_return = new OperacionEliminar(nombre_archivo);
		}
		else
				throw ExcepSintaxisParser("Error - Operacion ELIMINAR, parametros invalidos. RES = 0");
	}
	return _return;
}
		
void OperacionEliminar::ejecutar(Modelo *modelo){
	try{
		modelo->eliminar_archivo(this->nombre_archivo);
		std::string mensaje = "Se elimino el archivo " + this->nombre_archivo + ". RES = 1";
		(*Logger::get_instance()) << mensaje;
		( Debug::get_instance() )->mostrar_mensaje(mensaje);
	}
	catch (ExcepArchInexistente &e){
		std::string mensaje = "Error - El archivo "+ this->nombre_archivo +" es inexistente. No se puede eliminar. RES = 0";
		(*Logger::get_instance()) << mensaje;
		( Debug::get_instance() )->mostrar_mensaje(mensaje);
	}		
}
